<?php
// +----------------------------------------------------------------------
// | ThinkPHP
// +----------------------------------------------------------------------
// | Copyright (c) 2008 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$

    function checkCache($tmplTemplateFile)
    {
        $tmplCacheFile = TMPL_CACHE_PATH.md5($tmplTemplateFile).C('CACHFILE_SUFFIX');
        if(!file_exists($tmplCacheFile)){
            return false;
        }
        elseif (!C('TMPL_CACHE_ON')){
            return false;
        }elseif (filemtime($tmplTemplateFile) > filemtime($tmplCacheFile)) {
            // 模板文件如果有更新则缓存需要更新
            return false;
        } elseif (C('TMPL_CACHE_TIME') != -1 && time() > filemtime($tmplCacheFile)+C('TMPL_CACHE_TIME')) {
            // 缓存是否在有效期
            return false;
        }
        //缓存有效
        return true;
    }

function thinkTemplate($templateFile,$var,$charset,$contentType,$varPrefix='') {
	// 使用内置的ThinkTemplate模板引擎
	if(!checkCache($templateFile)) {
		// 缓存无效 重新编译
		$compiler	=	true;
		Think::import('Think.Template.ThinkTemplate');
		$tpl = ThinkTemplate::getInstance();
		// 编译并加载模板文件
		$tpl->load($templateFile,$charset,$var,$varPrefix);
	}else{
		// 缓存有效 直接载入模板缓存
		// 模板阵列变量分解成为独立变量
		extract($var, empty($varPrefix)? EXTR_OVERWRITE : EXTR_PREFIX_ALL,$varPrefix);
		//载入模版缓存文件
		include TMPL_CACHE_PATH.md5($templateFile).C('CACHFILE_SUFFIX');
	}
}
Tag::add('view_parse','thinkTemplate');
?>